Methods, systems, and computer-readable mediums for indexing and rapidly searching data records

ABSTRACT

One method involves receiving a search request that includes a date and phone number. A master index file is searched for the phone number. The master index file includes phone numbers associated with calls that occurred on the date in the search request. The master index file also includes the location of the first index record for the phone number in an index file. The index file includes an index record for each call record. Each index record includes a phone number from a call record and the location of the call record. In response to locating the phone number in the master index file, the index file is searched for each index record with the phone number. In response to locating an index record with the phone number, the call record associated with that index record is retrieved. A search result including each call record retrieved is returned.

CROSS-REFERENCE TO RELATED APPLICATIONS

This patent application is a continuation of U.S. patent applicationSer. No. 10/980,590, entitled “METHODS, SYSTEMS, AND COMPUTER-READABLEMEDIUMS FOR INDEXING AND RAPIDLY SEARCHING DATA RECORDS,” filed on Nov.3, 2004 and assigned to the same assignee as this application. Theaforementioned patent application is expressly incorporated herein, inits entirety, by reference.

TECHNICAL FIELD

The present invention generally relates to rapidly searching datarecords and, more particularly, relates to methods, computer-readablemediums, and systems for indexing and rapidly searching for call recordsin a telecommunications database.

BACKGROUND

Telecommunications companies periodically receive requests for searchingcall records. The requests may come in the form of a court subpoenaasking for call records for certain phone numbers on specified or arange of dates and/or times. Additionally, internal security departmentsfor telecommunications companies may need to request call recordsearches to investigate internal security issues. Also,telecommunications billing departments may occasionally need to searchcall records to verify a bill or to correct a billing issue. Previoussystems are slow at executing a search of this kind, typically taking asmuch as three days to complete a search. Because previous systems are soslow, the mainframe or billing system costs alone for previous systemsto run searches such as those mentioned above can amount to millions ofdollars per year.

Also, previous systems are limited by the call record history availablefor searching, a cost of the search, and/or the duration of the search.Some previous systems limit the call history searched due to cost andtime constraints. For instance, the search may be limited to the past 60days of call history. Thus, information prior to the 60-day mark ispotentially lost without some special custom procedure for retrievingthe data. There are parts of the data that may remain in variousdifferent systems for various lengths of time. Thus, some of the callrecord history can potentially be found. However, custom procedures toretrieve call records can be even more time consuming and costly thanstandard procedures.

Accordingly there is an unaddressed need in the industry to address theaforementioned deficiencies and inadequacies.

SUMMARY

In accordance with embodiments of the present invention, the above andother problems are solved by methods, systems, andcomputer-readable-mediums for indexing and rapidly searching datarecords. The present methods of searching for call records as disclosedin embodiments of the present invention are fast, inexpensive andscalable to larger data sets. One embodiment provides acomputer-implemented method of indexing and rapidly searching for callrecords in a computing system. Each call record may include anoriginating phone number of a call, a terminating phone number, a billedphone number, a date the call occurred, a time the call occurred, aduration of the call, a calling party, a called party, and a switch thatcarried the call among other related parameters. The method involvesreceiving the call records and sorting the call records such that a callrecord for a call that occurred on a particular date is stored with allother call records for calls on that particular date.

The method further involves creating an index record for each phonenumber included in the call records where each index record includes aphone number and a location of the call record associated with the phonenumber. The index records are then sorted by phone number where allindex records that include a same phone number associated with callrecords from the same date are stored together. Next, the index recordsassociated with a particular date are merged into an index fileassociated with that particular date and a master index file associatedwith that particular date is created. The master index file includeseach phone number included in the index file and a location of a firstindex record in that index file for each phone number included in themaster index file.

Still further, the method involves reading a search request for a callrecord where the search request includes a date and a phone numberassociated with the call record requested. Then the master index file issearched for the phone number in the search request where the masterindex file searched is associated with the date included in the searchrequest. In response to locating the phone number in the master indexfile, the first index record for the phone number included in the searchrequest is located in the index file and read. Then, in response toreading the first index record for the phone number included in thesearch request, the call record associated with the first index recordfor the phone number is located and retrieved.

Subsequently, a next index record in the index file is read. In responseto the next index record including the phone number in the searchrequest, the call record associated with the next index record islocated and retrieved. Each next index record is read and the associatedcall record is retrieved until the next index record no longer includesthe phone number in the search request. Then a search result includingeach call record retrieved is returned.

Another embodiment is a method of rapidly searching for a call record.The method involves receiving a search request that includes a date anda phone number associated with the call record requested. A master indexfile associated with the date is searched for the phone number includedin the search request. The master index file includes phone numbersassociated with calls that occurred on the date in the search request.Each phone number in the master index file is associated with at leastone call record available for retrieval. The master index file alsoincludes a pointer for each phone number included in the master indexfile. The pointers indicate a location of a first index record for thephone number in an index file associated with the date in the searchrequest and the master index file. The index file includes at least oneindex record for each call record available for retrieval and each indexrecord includes a phone number that is also included in a call recordavailable for retrieval and a pointer indicating a location of the callrecord.

In response to locating the phone number included in the search requestin the master index file, the index file is searched for each indexrecord associated with the phone number included in the search request.Further, in response to locating an index record associated with thephone number in the search request, the call record associated with thatindex record is located and retrieved. Finally, a search resultincluding each call record retrieved is returned.

Still another embodiment of the present invention is a system forindexing and rapidly searching for call records. The system includes afirst computer operative to receive the call records and sort the callrecords. A call record for a call that occurred on a particular date isstored with all other call records for calls occurring on thatparticular date. The first computer is further operative to create anindex record for each phone number in the call records where each indexrecord includes a phone number and a location of the call recordassociated with the phone number. The first computer then sorts theindex records by phone number where all index records that include asame phone number associated with call records from the same date arestored adjacent to one another. The index records associated with aparticular date are then merged into an index file associated with thatparticular date and a master index file associated with that particulardate is created. The master index file includes each phone numberincluded in the index file and a location of a first index record inthat index file for each phone number included in the master index file.

The first computer is still further operative to read a search requestfor a call record. The search request includes a date and a phone numberassociated with the call record requested. The first computer thensearches the master index file for the phone number in the searchrequest where the master index file searched is associated with the dateincluded in the search request. In response to locating the phone numberin the master index file, the first computer is operative to locate inthe index file and read each index record for the phone number includedin the search request. Further, in response to the phone number in anindex record matching the phone number in the search request, the firstcomputer is operative to retrieve the call record associated with thatindex record and return a search result that includes each call recordretrieved.

The system may also include a second computer operative to receive,store, and/or forward the search request to a variety of computersincluding the first computer and receive, store, and/or forward thesearch result returned by the first computer. The system may stillfurther include a third computer operative to prepare the call recordsreceived by the first computer where the first computer is furtheroperative to query the third computer for the call records.

Aspects of the invention may be implemented as a computer process, acomputing system, or as an article of manufacture such as a computerprogram product or computer-readable medium. The computer programproduct may be a computer storage media readable by a computer systemand encoding a computer program of instructions for executing a computerprocess. The computer program product may also be a propagated signal ona carrier readable by a computing system and encoding a computer programof instructions for executing a computer process.

These and various other features as well as advantages, whichcharacterize the present invention, will be apparent from a reading ofthe following detailed description and a review of the associateddrawings.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a schematic diagram illustrating aspects of a personalcomputer (PC), server, and billing system network utilized in anillustrative embodiment of the invention;

FIG. 2 illustrates computing system architecture for a search servercomputer utilized in an illustrative embodiment of the invention;

FIG. 3 illustrates an operational flow performed in indexing callrecords according to an illustrative embodiment of the invention.

FIG. 4 illustrates an operational flow performed in searching datarecords for call records according to an illustrative embodiment of theinvention; and

FIG. 5 is an interface display of a search result utilized in anillustrative embodiment of the invention.

DETAILED DESCRIPTION

As described briefly above, embodiments of the present invention providemethods, systems, and computer-readable mediums indexing and rapidlysearching for call records. In the following detailed description,references are made to accompanying drawings that form a part hereof,and in which are shown by way of illustration specific embodiments orexamples. These illustrative embodiments may be combined, otherembodiments may be utilized, and structural changes may be made withoutdeparting from the spirit and scope of the present invention. Thefollowing detailed description is, therefore, not to be taken in alimiting sense, and the scope of the present invention is defined by theappended claims and their equivalents.

Referring now to the drawings, in which like numerals represent likeelements through the several figures, aspects of the present inventionand the illustrative operating environment will be described. FIGS. 1-2and the following discussion are intended to provide a brief, generaldescription of a suitable computing environment in which the embodimentsof the invention may be implemented. While the invention will bedescribed in the general context of program modules that execute inconjunction with a BIOS program that executes on a personal or servercomputer, those skilled in the art will recognize that the invention mayalso be implemented in combination with other program modules.

Generally, program modules include routines, programs, components, datastructures, and other types of structures that perform particular tasksor implement particular abstract data types. Moreover, those skilled inthe art will appreciate that the invention may be practiced with othercomputer system configurations, including hand-held devices,multiprocessor systems, microprocessor-based or programmable consumerelectronics, minicomputers, mainframe computers, and the like. Theinvention may also be practiced in distributed computing environmentswhere tasks are performed by remote processing devices that are linkedthrough a communications network. In a distributed computingenvironment, program modules may be located in both local and remotememory storage devices.

Referring now to FIG. 1, a schematic diagram illustrating aspects of apersonal computer (PC), server, and billing system network 100 utilizedin an illustrative embodiment of the invention will be described. Asshown in FIG. 1, the network 100 includes PCs 105 a-105 n, a centralserver 108, search servers 107 a-107 n, and billing systems 110 a-110 n.Each PC 105 a-105 n is a client PC of the central server 108 andincludes a call record view application 109. The call record viewapplications provide a vehicle to receive search requests from users viaa search interface, for example a search interface 112, and to displayretrieved search results. The call record view application 109 is thesubject of patent application Ser. No. 10/094,640, entitled System andMethod for Managing CDR Information filed on Mar. 12, 2002, which ishereby incorporated by reference.

The search interface 112 includes a variety of fields for receivingparameters related to searching for call records. For example, theinterface 112 includes a phone number field 114 for receiving one ormore phone numbers for which call records are sought, a date field 115for receiving a date or date range of calls associated with the callrecords searched, and a time field 117 for receiving a time or timerange of the calls. The search interface 112 also may include a typefield 118 designating whether a phone number sought is of all types, anoriginating phone number of a call, a terminating phone number, and/or abilled phone number.

The central server 108 receives search requests from the client PCs 105and forwards the search requests to each search server 107 a-107 n. Eachserver 107 a-107 n downloads call record data from a respective billingsystem 110 a-110 n each day. The billing systems 110 a-110 n areregional, and thus capture call records for that region. Therefore,parallel searching of each region may take place for each searchrequest. Parallel searching enables smaller groups of records to besearched simultaneously, which permits the search to go faster thantrying to search all the data at a single location at once orconsecutively. Furthermore, the searching takes place on the searchservers 107 a-107 n and thus, does not require extensive billing systemresources or time.

FIG. 2 illustrates a computing system architecture for a search server107 utilized in an illustrative embodiment of the invention. The searchserver 107 includes a central processing unit (CPU) 210, a system memory202, and a system bus 252 that couples the system memory 202 to the CPU210. The system memory 202 includes read-only memory (ROM) 206 andrandom access memory (RAM) 204. A basic input/output system 208 (BIOS),containing the basic routines that help to transfer information betweenelements within the search server 107, such as during start-up, isstored in ROM 206. The search server 107 further includes a mass storagedevice (MSD) 214 for storing an operating system 216 such as WINDOWS XP,from MICROSOFT CORPORATION of Redmond, Wash., a search application 250for searching data records, an indexing application 254 for indexingdata, and other applications 211, for example a word processing and/orspreadsheet application. It should be appreciated that the MSD 214 maybe a redundant array of inexpensive discs (RAID) system for storing dataincluding software capable of supporting a TCP/IP or other protocolstack.

The indexing application 254 indexes the call records downloaded to callrecord storage 235, for example call records 237 a-237 d. Indexing ofthe call records produces temporary indexes 230 a-230 n, which aremerged to create an index file 239 including index records 240, and amaster index file 255 that includes master index records. Additionaldetails regarding the indexing of call records will be describe belowwith respect to FIG. 3.

The MSD 214 is connected to the CPU 210 through a mass storagecontroller (not shown) connected to the system bus 252. The MSD 214 andits associated computer-readable media, provide non-volatile storage forthe search server 107. Although the description of computer-readablemedia contained herein refers to a mass storage device, such as a harddisk or RAID array, it should be appreciated by those skilled in the artthat computer-readable media can be any available media that can beaccessed by the CPU 210.

An input/output controller 224 may also be included with the searchserver 107 for receiving and processing input from a number of inputdevices (not shown). The input/output controller 224 communicates withthe CPU 210 through the system bus 252.

The CPU 210 may employ various operations, discussed in more detailbelow with reference to FIGS. 3 and 4 to provide and utilize the signalspropagated between the search server 107 and the billing system 110. TheCPU 210 may store data to and access data from mass storage device 214,such as electronic memory. Data is transferred to and received from thestorage device 214 through the system bus 252. The CPU 210 may be ageneral-purpose computer processor. Furthermore as mentioned below, theCPU 210, in addition to being a general-purpose programmable processor,may be firmware, hard-wired logic, analog circuitry, other specialpurpose circuitry, or any combination thereof.

According to various embodiments of the invention, the search server 107operates in a networked environment, as shown in FIGS. 1 and 2, usinglogical connections to remote computing devices via networkcommunication, such as an Intranet, or a local area network (LAN). Thesearch server 107 may connect to a network 120 via a network interfaceunit 212. It should be appreciated that the network interface unit 212may also be utilized to connect to other types of networks and remotecomputer systems.

A computing system, such as the search server 107, typically includes atleast some form of computer-readable media. Computer readable media canbe any available media that can be accessed by the search server 107. Byway of example, and not limitation, computer-readable media mightcomprise computer storage media and communication media.

Computer storage media includes volatile and nonvolatile, removable andnon-removable media implemented in any method or technology for storageof information such as computer readable instructions, data structures,program modules or other data. Computer storage media includes, but isnot limited to, RAM, disk drives, a collection of disk drives, flashmemory, other memory technology or any other medium that can be used tostore the desired information and that can be accessed by the searchserver 107.

Communication media typically embodies computer-readable instructions,data structures, program modules or other data in a modulated datasignal such as a carrier wave or other transport mechanism and includesany information delivery media. The term “modulated data signal” means asignal that has one or more of its characteristics set or changed insuch a manner as to encode information in the signal. By way of example,and not limitation, communication media includes wired media such as awired network or direct-wired connection, and wireless media such asacoustic, RF, infrared, and other wireless media. Combinations of any ofthe above should also be included within the scope of computer-readablemedia. Computer-readable media may also be referred to as computerprogram product.

Referring now to FIGS. 1, 2, and 3 an operational flow 300 performed inindexing call records according to an illustrative embodiment of theinvention will be described. The operational flow 300 begins atoperation 301 where the search server 107 monitors the billing system110 and detects new data or call records available for processing. Nextat operation 302 the billing systems 110 a-110 n prepare theirrespective call records that contain details of calls transacted over atelecommunications network. The call records are typically generated bya switch and transferred to a call detail record (CDR) collector beforebeing sent to the billing system 110. Each call record may include anoriginating phone number of a call, a terminating phone number, a billedphone number, a date the call occurred, a time the call occurred, aduration of the call, a calling party name, a called party name, calltype, carrier identifier, and/or a switch that carried the call amongother parameters.

The operational flow continues to operation 304 where the billing system110 copies and modifies the call records to exclude data unnecessary inlocating the call record and sends the modified call records to thesearch server 107. This may include removing headers, trailers, and somesummary information. This may also include removing unnecessary fieldssuch as switch type and trunk usage information. Next, the operationalflow 300 continues to operation 307 where the search server 107 monitorsfor and receives the modified call records by querying the billingsystem 110 for new call records and downloading the new call records. Itshould be appreciated that the search server may also retrieve the callrecords directly from a CDR collector (not shown) and/or a Voice over IPsystem (not shown).

The operational flow 300 then continues to operation 308 where thesearch server reads a modified call record. Next, at operation 309 thesearch server 107 reduces the modified call record in size byreformatting the call record to exclude information such as the date.The search server 107 stores the call records by date, which allows forfaster searching. Storing the call records by date makes the dateinformation within the call record unnecessary, thus removing the dateinformation from the call record allows for smaller files. At operation310, the search server 107 appends the reformatted call record to thecall record storage file 235 for each date according to the date callsassociated with the respective call record occurred. The search server107 stores a call record for a call that occurred on a particular datewith all other call records for calls on that particular date.

At operation 311, the search server 107 creates index records 261 foreach phone number included in the reformatted call record storage files235. The search server 107 converts the phone numbers included in thereformatted call records storage files 235 to a key or hash. The searchserver 107 may store these index records in the temporary index files230 a-230 n until the downloaded call records are processed. Each indexrecord includes a phone number 240 and a location or address 260 a-260 dof the call record associated with the phone number in the call recordstorage file 235. Typically there are two index records generated foreach call record, one for the originating number and one for theterminating number. In some cases the originating number (or rarely theterminating number) is unknown. When this happens only a single indexrecord is created. If the billed number is known and is different thanboth the originating number and the terminating number, an additionalindex record is created.” If no valid numbers are found on the record,the record is not stored and no indexes are created.

At detect operation 312, the search server 107 makes a determination asto whether a quantity of index records created have reached apredetermined threshold quantity, for example 4 million. If not, theoperational flow branches to detect operation 315 described below. Whenthe quantity of index records has reached the predetermined thresholdquantity, the operational flow continues to operation 314 where thesearch server 107 sorts the index records by phone number such that allindex records that include a same phone number associated with callrecords from the same date are stored together.

The operational flow 300 then continues to detect operation 315 where adetermination is made as to whether the all the new call records havebeen received and processed. If not, the operational flow 300 branchesback to operation 307 described above. When the new call records havebeen received and processed, the operational flow 300 continues fromdetect operation 315 to operation 316 where any remaining index recordsare sorted and written out in a manner similar to operation 314. Afterall index records are written, the flow continues at merge operation 317where the search server 107 merges index records associated with aparticular date into the index file 239 associated with that particulardate. Operation 317 also creates a master index file 255 associated withthat particular date. The master index file includes each phone number257 included in the index file 239 and a location or address 232 of afirst index record 240 in that index file 239 for each phone numberincluded in the master index file 255. The search server 107 createsindex records, index files, and master index files for each date wherecalls associated with the stored call records occur. The operationalflow 300 then returns control to other operations at return operation320. It should be appreciated that the file of modified call recordsreceived at operation 307 are deleted after operation 317.

Turning now to FIGS. 1, 2, and 4, an operational flow 400 performed insearching data records for call records according to an illustrativeembodiment of the invention will be described. The operational flow 400begins operation 402 where a search request is received at a client PC105 and forwarded to the central server 108. In the present illustrativeembodiment, the PC 105 may receive a list of phone numbers to searchfor, but the PC 105 forwards each phone number to the central server 108as separate request. At operation 404 the central server 108 mayreceive, store, and forward the search request to each search server 107a-107 n.

The operational flow 400 then continues to operation 407 where thesearch server 107 reads the search request for one or more call records.The search request at least includes a date range and phone numberassociated with the call records requested. Next, at operation 408, thesearch server 107 converts the phone numbers received in the searchrequest to a key or hash. This conversion operation is identical to theconversion operation executed in operation 311 of FIG. 3. Next, atoperation 409 the search server 107 begins with the first date of thedate range and continues to operation 410. At operation 410, the searchserver 107 searches the master index file 255 for the hash of the phonenumber in the search request. The master index file 255 is associatedwith the date included in the search request.

The operational flow 400 then continues to detect operation 412 wherethe search server 107 makes a determination as to whether the hashrepresenting the phone number of the search request is located in themaster index file 255 for the date of the search request. If not, theoperational flow 400 continues to operation 418 described below. Whenthe hash of the phone number of the search request is included in themaster index file 255, the operational flow 400 continues to operation414. At operation 414, in response to locating hash of the phone numberin the master index file 255, the search server 107 locates the indexfile 239 associated with the master index file and locates and reads thefirst index record for the hash of the phone number included in thesearch request.

Next at operation 415, in response to reading the first index record forthe phone number included in the search request, the search server 107locates and retrieves the call record associated with the first indexrecord for the phone number. It should also be appreciated that becauseof the possibility of the same hash generated by two or more differentphone numbers in a computer system, the search server 107 verifies thatthe phone numbers in the call records retrieved actually match thesearch request phone number. The operational flow 400 then continues tooperation 416 where the search server 107 reads the next index recordsincluding the phone number in the search request. It should beappreciated that the index records may also be matched for type of phonenumber when type is included in the search request.

At operation 417, the search server 107 determines whether the nextindex record includes the correct hash or key matching the searchrequest. When the correct hash is included, the operational flow 400returns to operation 415 described above. Matching the search requestmay include matching all parameters in the search request including atime of the call, duration, and switch if included.

When the correct hash is not included, the operational flow 400continues to operation 418 where the search server 107 determineswhether there are more dates from the search request to search. Whenthere are more dates to search, the operational flow 400 returns tooperation 410 described above. When there are no more dates to search,the operational flow 400 continues to operation 419. At operation 419,the search server 107 returns the search results to the central server108 having retrieved all the call records matching the search request.

At operation 420, the central server 108 receives, merges, stores, andforwards the search results to the requesting client PC 105. Then atoperation 421 the requesting client PC 105 displays the search resultcall records as illustrated below in FIG. 5.

FIG. 5 is an interface display 500 of a search result utilized in anillustrative embodiment of the invention. The interface display 500,displayed via the client PC 105, may include the type 502 of searchrequest phone number, the called phoned number 504, the calling phonenumber 505, the date of the call 507, time of the call 508, duration ofthe call 510, a call type 512, and an indicator 514 as to whether thecall was answered as well as other call record parameters.

Thus, the present invention is presently embodied as methods, systems,computer program products or computer readable mediums encoding computerprograms for indexing and rapidly searching for call records in acomputing system.

The above specification, examples and data provide a completedescription of the manufacture and use of the composition of theinvention. Since many embodiments of the invention can be made withoutdeparting from the spirit and scope of the invention, the inventionresides in the claims hereinafter appended.

1. A computer implemented method of indexing and rapidly searching forcall records in a computing system wherein each call record includes atleast one of an originating phone number of a call, a terminating phonenumber, a billed phone number, a date the call occurred, a time the calloccurred, a duration of the call, a calling party name, a called partyname, or a switch that carried the call, the method comprising:receiving the call records; storing the call records wherein a callrecord for a call that occurred on a particular date is stored with allother call records for calls on that particular date; creating an indexrecord for each phone number in the call records wherein each indexrecord includes a phone number and a location of the call recordassociated with the phone number included; and creating a master indexfile associated with that particular date the master index fileincluding each phone number included in the index file and a location ofa first index record in that index file for each phone number includedin the master index file.
 2. The method of claim 1, further comprising:reading a search request for a call record wherein the search requestincludes a date and a phone number associated with the call recordrequested; searching the master index file for the phone number in thesearch request wherein the master index file searched is associated withthe date included in the search request; and in response to locating thephone number in the master index file, locating in the index file andreading the first index record for the phone number included in thesearch request.
 3. The method of claim 2, further comprising in responseto reading in the index file the first index record for the phone numberincluded in the search request, locating and retrieving the call recordassociated with the first index record for the phone number.
 4. Themethod of claim 3, further comprising: a) reading a next index record inthe index file; b) in response to the next index record including thephone number in the search request, locating and retrieving the callrecord associated with the next index record; and repeating a) and b)until the next index record no longer includes the phone number in thesearch request.
 5. The method of claim 4, further comprising returning asearch result wherein the search result includes each call recordretrieved.
 6. The method of claim 4, further comprising: verifyingwhether each call record retrieved is actually a call record for thephone number in the search request; and in response to a call recordretrieved being actually for the phone number in the search request,returning a search result that includes that call record retrieved. 7.The method of claim 2, wherein the search request further includes atype of phone number requested comprising at least one of all types,originating, terminating, or billed and wherein each index recordfurther includes a flag indicating whether the phone number in the indexrecord is at least one of originating, terminating, or billed furthercomprising in response to the phone number in the first index recordbeing the type of phone number requested, locating and retrieving thecall record associated with the first index record for the phone numberin the search request.
 8. The method of claim 7, further comprising:reading each index record in the index file that includes the phonenumber in the search request and is subsequent to the first indexrecord; in response to the phone number in an index record read matchingthe phone number in the search request and being the type of phonenumber requested, retrieving the call record associated with that indexrecord; and returning a search result wherein the search result includeseach call record retrieved.
 9. The method of claim 2, wherein the searchrequest further includes a time associated with the call recordrequested, the method further comprising: in response to reading thefirst index record for the phone number in the index file, locating andreading the call record associated with the first index record for thephone number in the search request; determining whether the call recordread is associated with the time associated with the call recordrequested; in response to the call record read being associated with thetime, retrieving the call record read; reading each subsequent indexrecord in the index file containing the phone number in the searchrequest; in response to the phone number in an index record matching thephone number in the search request, reading the call record associatedwith that index record; in response to the call record associated withthat index record being associated with the time, retrieving the callrecord associated with that index record; and returning a search resultwherein the search result includes each call record retrieved.
 10. Themethod of claim 1, wherein receiving the call records comprisesreceiving modified call records that exclude fields that are unnecessaryfor indexing and rapidly searching for call records.
 11. The method ofclaim 1, further comprising sorting the index records by phone numberwherein all index records that include a same phone number associatedwith call records from the same date are stored together.
 12. The methodof claim 11, further comprising merging the index records associatedwith a particular date into an index file associated with thatparticular date.
 13. The method of claim 1, wherein creating an indexrecord for each phone number in the call records includes: determiningwhether the billed phone number for a call record matches at least oneof the originating phone number or the terminating phone number for thecall record; and creating an index record for the billed phone numberonly when the billed phone number does not match at least one of theoriginating phone number or the terminating phone number for the callrecord.
 14. The method of claim 11, wherein receiving the call recordscomprises reading the call records from a file, the method furthercomprising: determining whether a quantity of the index records createdhas reached a predetermined quantity wherein the index records aresorted into a first temporary index file in response to the quantity ofindex records created reaching the predetermined quantity; accumulatingadditional index records created in a second temporary index file untilthe predetermined quantity is reached; when the predetermined quantityis reached, sorting the additional index records in the second temporaryindex file; and determining whether reading the call records from thefile has been completed wherein merging the index records associatedwith a particular date into an index file comprises merging the indexrecords sorted from each temporary index file into the index file inresponse to reading the call records being completed.
 15. The method ofclaim 1, wherein creating the master index file comprises creating themaster index file simultaneously with the index file.
 16. A computerprogram product comprising a computer-readable medium having controllogic stored therein for causing a computer to index and rapidly searchfor call records in a computing system, the control logic comprisingcomputer-readable program code for causing the computer to: receive thecall records; store the call records wherein a call record for a callthat occurred on a particular date is stored with all other call recordsfor calls on that particular date; create an index record for each phonenumber in the call records wherein each index record includes a phonenumber and a location of the call record associated with the phonenumber included; sort the index records by phone number wherein allindex records that include a same phone number associated with callrecords from the same date are stored together; and create a masterindex file associated with that particular date the master index fileincluding each phone number included in the index file and a location ofa first index record in that index file for each phone number includedin the master index file.
 17. A system for indexing and rapidlysearching for call records wherein each call record includes at leastone of an originating phone number of a call, a terminating phonenumber, a billed phone number, a date the call occurred, a time the calloccurred, a duration of the call, a calling party name, a called partyname, or a switch that carried the call, the system comprising: a firstcomputer operative to: receive the call records; sort the call recordswherein a call record for a call that occurred on a particular date isstored with all other call records for calls on that particular date;create an index record for each phone number in the call records whereineach index record includes a phone number and a location of the callrecord associated with the phone number included; and create a masterindex file associated with that particular date the master index fileincluding each phone number included in the index file and a location ofa first index record in that index file for each phone number includedin the master index file.
 18. The system of claim 17, wherein the firstcomputer is further operative to: sort the index records by phone numberwherein all index records that include a same phone number associatedwith call records from the same date are stored adjacent to one another;and merge the index records associated with a particular date into anindex file associated with that particular date.
 19. The system of claim17, wherein the first computer is further operative to: sort the indexrecords by phone number wherein all index records that include a samephone number associated with call records from the same date are storedadjacent to one another; merge the index records associated with aparticular date into an index file associated with that particular date;read a search request for a call record wherein the search requestincludes a date and a phone number associated with the call recordrequested; search the master index file for the phone number in thesearch request wherein the master index file searched is associated withthe date included in the search request; in response to locating thephone number in the master index file, locate in the index file and readeach index record for the phone number included in the search request;in response to the phone number in an index record read matching thephone number in the search request, retrieve the call record associatedwith that index record; and return a search result wherein the searchresult includes each call record retrieved.
 20. The system of claim 19,further comprising: a second computer operative to: at least one ofreceive the search request, store the search request, or forward thesearch request to a variety of computers including the first computer;and at least one of receive, store, or forward the search resultreturned by the first computer; and a third computer operative to:prepare the call records received at the first computer wherein thefirst computer is further operative to query the third computer for thecall records.